'''
    模拟头部信息
    我们抓取网页一般需要对 headers（网页头信息）进行模拟，这时候需要使用到 urllib.request.Request 类：

    class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
    url：url 地址。
    data：发送到服务器的其他数据对象，默认为 None。
    headers：HTTP 请求的头部信息，字典格式。
    origin_req_host：请求的主机地址，IP 或域名。
    unverifiable：很少用整个参数，用于设置网页是否需要验证，默认是False。。
    method：请求方法， 如 GET、POST、DELETE、PUT等。
'''


from urllib import request, parse

# 菜鸟教程的搜索
url = "https://www.runoob.com/?s="
keyword = "Python 教程"
# 对请求进行编码
keyword_encode = request.quote(keyword)
url_all = url + keyword_encode
header = {
    'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
req = request.Request(url_all, headers=header)
rep = request.urlopen(req).read()
fh = open("urllib_test_runoob_search.html", "wb")
fh.write(rep)
fh.close()